
 1000  *SAVE S.PRODOS NUMOUT (SC)
 1010  *--------------------------------
 1020  *--------------------------------
 1030  *   CONVERT 00.XX.AA FROM BINARY TO DECIMAL
 1040  *   STORE UNITS DIGIT AT $201,Y
 1050  *   STORE OTHER DIGITS AT SUCCESSIVE LOWER ADDRESSES
 1060  *
 1070  *      Note:  it is assumed and required that
 1080  *             ACCUM+2 already by zeroed!
 1090  *             Either that, or already set to the
 1100  *             highest byte of a 24-bit value.
 1110  *--------------------------------
 1120  CONVERT.TO.DECIMAL
 1130         STX ACCUM+1
 1140         STA ACCUM
 1150  .1     JSR DIVIDE.ACCUM.BY.TEN
 1160         LDA REMAINDER
 1170         ORA #"0"
 1180         STA BUFFER+1,Y
 1190         DEY
 1200         LDA ACCUM    CHECK IF QUOTIENT ZERO
 1210         ORA ACCUM+1
 1220         ORA ACCUM+2
 1230         BNE .1
 1240         RTS
 1250  *--------------------------------
 1260  DIVIDE.ACCUM.BY.TEN
 1270         LDX #24      24 BITS IN DIVIDEND
 1280         LDA #0       START WITH REM=0
 1290  .1     JSR SHIFT.ACCUM.LEFT
 1300         ROL
 1310         CMP #10
 1320         BCC .2       STILL < 10
 1330         SBC #10
 1340         INC ACCUM    QUOTIENT BIT
 1350  .2     DEX          NEXT BIT
 1360         BNE .1
 1370         STA REMAINDER
 1380         RTS
 1390  *--------------------------------
 1400  ACCUM      .BS 3
 1410  REMAINDER  .BS 1
 1420  BUFFER     .EQ $0200
 1430  *--------------------------------
 1440  *--------------------------------
 1450  SHIFT.ACCUM.LEFT
 1460         ASL ACCUM
 1470         ROL ACCUM+1
 1480         ROL ACCUM+2
 1490         RTS
 1500  *--------------------------------
 1510  T      LDA 0
 1520         STA ACCUM+2
 1530         LDX 1
 1540         LDA 2
 1550         LDY #10
 1560         JSR CONVERT.TO.DECIMAL
 1570  .1     INY
 1580         LDA BUFFER+1,Y
 1590         JSR $FDED
 1600         CPY #10
 1610         BCC .1
 1620         RTS
 1630  *--------------------------------
 1640  DIVIDE.ACCUM.BY.TEN.SHORTEST
 1650         LDX #24      24 BITS IN DIVIDEND
 1660         LDA #0       START WITH REM=0
 1670  .1     CMP #5 
 1680         BCC .2       STILL < 10
 1690         SBC #5 
 1700  .2     ROL ACCUM
 1710         ROL ACCUM+1
 1720         ROL ACCUM+2
 1730         ROL
 1740         DEX          NEXT BIT
 1750         BNE .1
 1760         STA REMAINDER
 1770         RTS
 1780  *--------------------------------
 9999    .LIF

